Don't call generic methods on trait objects
authorAlex Crichton <alex@alexcrichton.com>
Tue, 1 Jul 2014 22:40:33 +0000 (15:40 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Tue, 1 Jul 2014 22:44:55 +0000 (15:44 -0700)
Closes #102

src/bin/cargo-test.rs
src/cargo/core/package_id.rs
src/cargo/lib.rs
src/cargo/util/config.rs

index 4becf95a6a37303dfce2ce5bd2e409a91376dcd3..d4f2c7c00f9d7bb938d60b08de2515437b52170c 100755 (executable)
@@ -15,7 +15,7 @@ use cargo::ops;
 use cargo::{execute_main_without_stdin};
 use cargo::core::{MultiShell};
 use cargo::util;
-use cargo::util::{CliResult, CliError};
+use cargo::util::{CliResult, CliError, CargoError};
 use cargo::util::important_paths::find_project_manifest;
 
 #[deriving(PartialEq,Clone,Decodable)]
@@ -56,7 +56,9 @@ fn execute(options: Options, shell: &mut MultiShell) -> CliResult<Option<()>> {
     }));
 
     for file in walk {
-        try!(util::process(file).exec().map_err(|e| CliError::from_boxed(e.box_error(), 1)));
+        try!(util::process(file).exec().map_err(|e| {
+            CliError::from_boxed(e.box_error(), 1)
+        }));
     }
 
     Ok(None)
index 1a421fe636f77873b8630eda2445d29c480e4bf8..7e268c45c67d15d36989b5e15acf7467e1c16edf 100644 (file)
@@ -120,10 +120,7 @@ impl<D: Decoder<Box<CargoError + Send>>>
     for PackageId
 {
     fn decode(d: &mut D) -> Result<PackageId, Box<CargoError + Send>> {
-        let vector: Vec<String> = match Decodable::decode(d) {
-            Ok(v) => v,
-            Err(e) => return Err(e.to_error())
-        };
+        let vector: Vec<String> = try!(Decodable::decode(d));
 
         PackageId::new(
             vector.get(0).as_slice(),
index 314f9d0adf44a8b183c0bda5cb6eecfe1895aa3f..7acdddcbaec86bb0805218f053b0cb94b13360a1 100644 (file)
@@ -50,8 +50,8 @@ mod cargo {
 #[macro_export]
 macro_rules! try (
     ($expr:expr) => ({
-        use cargo::util::CargoError;
-        match $expr.map_err(|err| err.to_error()) {
+        use cargo::util::FromError;
+        match $expr.map_err(FromError::from_error) {
             Ok(val) => val,
             Err(err) => return Err(err)
         }
index 34e7ec5a6b836e59eacd8df74c5fe7c9f196c833..e733f672e8520a6b8951bafcb12c6216d9f8e0d5 100644 (file)
@@ -3,7 +3,7 @@ use std::collections::HashMap;
 use serialize::{Encodable,Encoder};
 use toml;
 use core::MultiShell;
-use util::{CargoResult, CargoError, ChainError, Require, internal, human};
+use util::{CargoResult, ChainError, Require, internal, human};
 
 use cargo_toml = util::toml;